/**
 * 在Java中，同一个包（package）下的类遵循以下使用规则：

    1. 默认访问权限：如果一个类没有使用任何访问修饰符（如`public`、`protected`、`private`），那么这个类默认具有包级私有（package-private）访问权限。这意味着只有同一包内的其他类可以访问它。

    2. 包访问：在同一个包内的类可以互相访问对方的包级私有成员，包括字段、方法和内部类。

    3. 公有访问：如果一个类或类的成员被标记为`public`，则它可以被任何其他类访问，不论它们是否在同一个包内。

    4. 受保护访问：如果一个类的成员被标记为`protected`，它可以被同一包内的其他类访问，也可以被不同包中的子类访问。

    5. 私有访问：如果一个类的成员被标记为`private`，则它只能在定义它的类内部访问，即使是同一包中的其他类也无法访问。

    6. 导入类：虽然在同一个包中的类不需要使用`import`语句就可以互相访问，但是如果你想要使用类的全名（包括包路径），你可以使用`import`语句来简化代码。

    7. 子包访问：对于在子包中的类，它们可以访问父包中的公有（`public`）和受保护（`protected`）成员，但不能访问包级私有成员。

    8. 内部类访问：在Java中，内部类（包括静态和非静态内部类）可以访问其外部类的成员，即使这些成员是私有的。

    9. 接口实现：如果一个类实现了一个接口，即使这个接口在不同的包中，类也必须提供接口中所有公有方法的实现。

    10. 类路径：当编译和运行Java程序时，确保类路径（classpath）设置正确，以便编译器和Java虚拟机（JVM）可以找到所需的类和资源。

    了解这些规则有助于在Java程序设计中合理地组织代码，确保类的封装性和模块化，同时也便于代码的维护和扩展。

*/

public class SuperMarket {
    public static void main(String[] args) {

        /**
         * 创建类的实例：
         * 使用new操作符，可以创建一个类的实例/对象（ instance/object ）。
         * 使用new创建一个类的实例后，类中定义的每种变量都会被赋以其类型的初始值。
         * 这个和数组也是一样的
         * 使用一个同类型的对象变量，可以指向并操作这个实例。这两点和数组都很类似
         * 
        */
        // 创建一个Merchandise的实例，用m1指向它。
        Merchandise m1 = new Merchandise();
        // 使用点操作符，给m1指向的实例赋值。
        m1.name = "茉莉花茶包 20 包";
        m1.id = "000099518";
        m1.count = 1000;
        m1.price = 99.9;

        Merchandise m2 = new Merchandise();
        m2.name = "可口可乐 330ml";
        m2.id = "000099519";
        m2.count = 1000;
        m2.price = 3.0;


        // 卖出一个商品1
        int m1ToSold = 1;
        System.out.println("感谢购买" + m1ToSold + "个" + m1.name + "。商品单价为"
                + m1.price + "。消费总价为" + m1.price * m1ToSold + "。");
        m1.count -= m1ToSold;
        System.out.println(m1.id + "剩余的库存数量为" + m1.count);

        // 卖出3个商品2
        int m2ToSold = 3;
        System.out.println("感谢购买" + m2ToSold + "个" + m2.name + "。商品单价为"
                + m2.price + "。消费总价为" + m2.price * m2ToSold + "。");
        m2.count -= m2ToSold;
        System.out.println(m2.id + "剩余的库存数量为" + m2.count);


    }
}
